import axios from 'axios'

// 配置新建一个 axios 实例
const service = axios.create({
  baseURL: 'http://localhost:4000',
  timeout: 50000, // 请求超时时间
  headers: { 'Content-Type': 'application/json' },
  validateStatus: function(status) {
    return status < 500 // 状态码在大于或等于500时才会 reject
  }
})


service.interceptors.request.use(async req => {
  const cookie = window.storage.get('token')
  let url = new URL('http://localhost/' + req.baseURL + req.url)
  // get 且 cookie 存在
  if (req.method === 'get' && cookie) {
    url.searchParams.append('cookie', cookie)
  }
  if (req.method === 'post') {
    url.searchParams.append('timestamp', +new Date())
  }

  req.url += url.search
  // console.log(req) req有headers属性就可以添加Authorization字段
  // 必须返回请求对象
  return req
})


service.interceptors.response.use(res => {
  if (res.data.code >= 300 && res.data.code < 400) {
    // 未登录
    console.error(`需要登录才可以调用${res.request.responseURL}接口`)
    window.$error('未登录网易账号')

  }
  // 必须返回响应对象
  return res.data
}, (err) => {
  window.$error(err)
})


// 导出 axios 实例
export default service
